{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from skimage import data, segmentation\n",
    "from skimage import filters\n",
    "from skimage import exposure\n",
    "from skimage.morphology import skeletonize, skeletonize_3d\n",
    "from skimage.util import invert\n",
    "from skimage.measure import label, regionprops\n",
    "from skimage.feature import match_template\n",
    "from skimage import transform as tf\n",
    "from skimage.exposure import rescale_intensity\n",
    "from skimage.feature import (match_descriptors, corner_harris,\n",
    "                             corner_peaks, ORB, plot_matches)\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from functools import partial\n",
    "\n",
    "import gym"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_obses():\n",
    "    obses = []\n",
    "    env = gym.make('CarRacing-v0')\n",
    "    for i_episode in range(2):\n",
    "        observation = env.reset()\n",
    "        for t in range(100):\n",
    "            env.render()\n",
    "            if t < 10:\n",
    "                action = (1.1, 1, 0) # steer, gas, brake\n",
    "            else:\n",
    "                action = (0, 0, 0)\n",
    "            observation, reward, done, info = env.step(action)\n",
    "            gray_obs = np.mean(observation, axis=2)\n",
    "            obses.append(gray_obs)\n",
    "            if done:\n",
    "                print(\"Episode finished after {} timesteps\".format(t+1))\n",
    "                break\n",
    "    env.close()\n",
    "    return obses\n",
    "\n",
    "def find_road_and_car_from_sence(sence, show=False):\n",
    "    \"   \"\n",
    "    camera = sence\n",
    "    hist, bins_center = exposure.histogram(camera)\n",
    "\n",
    "    if show:\n",
    "        plt.figure(figsize=(9, 4))\n",
    "        plt.subplot(141)\n",
    "        plt.imshow(camera, cmap='gray', interpolation='nearest')\n",
    "        plt.axis('off')\n",
    "        plt.subplot(142)\n",
    "\n",
    "    road = np.bitwise_and(camera > 90, camera < 120)\n",
    "    road = np.bitwise_or(road, camera < 2)\n",
    "    road[-20:, :] = False\n",
    "    # road[:10, :] = False # New\n",
    "    car = np.bitwise_and(camera > 60, camera < 80)\n",
    "    car[-10:, :] = False # New\n",
    "    road = np.bitwise_or(road, car)\n",
    "\n",
    "    if show:\n",
    "        plt.imshow(road, cmap='gray', interpolation='nearest')\n",
    "        plt.axis('off')\n",
    "        plt.subplot(143)\n",
    "        plt.imshow(car, cmap='gray', interpolation='nearest')\n",
    "        plt.axis('off')\n",
    "        plt.subplot(144)\n",
    "        plt.plot(bins_center, hist, lw=2)\n",
    "        plt.axvline(120, color='k', ls='--')\n",
    "\n",
    "        plt.tight_layout()\n",
    "        plt.show()\n",
    "    \n",
    "    return road, car\n",
    "\n",
    "def find_skeleton(image, show=False):\n",
    "    # perform skeletonization\n",
    "    skeleton = skeletonize_3d(image)\n",
    "\n",
    "    if show:\n",
    "        # display results\n",
    "        fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 4),\n",
    "                                 sharex=True, sharey=True)\n",
    "\n",
    "        ax = axes.ravel()\n",
    "\n",
    "        ax[0].imshow(image, cmap=plt.cm.gray)\n",
    "        #ax[0].axis('off')\n",
    "        ax[0].set_title('original', fontsize=20)\n",
    "\n",
    "        ax[1].imshow(skeleton, cmap=plt.cm.gray)\n",
    "        #ax[1].axis('off')\n",
    "        ax[1].set_title('skeleton', fontsize=20)\n",
    "\n",
    "        fig.tight_layout()\n",
    "        plt.show()\n",
    "    \n",
    "    return skeleton\n",
    "\n",
    "def find_not_zero_from_matrix(m):\n",
    "    ans = []\n",
    "    for i, line in enumerate(m):\n",
    "        for k, point in enumerate(line):\n",
    "            if point>0:\n",
    "                ans.append((i, k))\n",
    "    return ans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Track generation: 1104..1384 -> 280-tiles track\n",
      "Track generation: 1189..1490 -> 301-tiles track\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "200"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obses = get_obses()\n",
    "\n",
    "len(obses)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "imshow = partial(plt.imshow, cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x18abefeafc8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "k = 99\n",
    "imshow(obses[k])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "road, car = find_road_and_car_from_sence(obses[90], show=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "road_skeleton = find_skeleton(road)\n",
    "car_skeleton = find_skeleton(car)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "road_xy = find_not_zero_from_matrix(road_skeleton)\n",
    "car_xy = find_not_zero_from_matrix(car_skeleton)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(75, 47)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "car_head = car_xy[-1] # 预计稳定后一直是 (75, 47)  # 向下是x，向右是y\n",
    "car_head"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(61, 39), (62, 39), (63, 40), (64, 40), (65, 40), (66, 40)]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "road_xy = [a for a in road_xy if 60<a[0]<75]\n",
    "road_xy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "car_bias = np.mean([y-47 for (x, y) in road_xy])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-7.333333333333333"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "car_bias"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The final ans: GET CAR BIAS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cacl_car_bias(sence, show=False):\n",
    "    road, car = find_road_and_car_from_sence(sence, show)\n",
    "    road_skeleton = find_skeleton(road, show)\n",
    "    car_skeleton = find_skeleton(car, show)\n",
    "    road_xy = find_not_zero_from_matrix(road_skeleton)\n",
    "    car_xy = find_not_zero_from_matrix(car_skeleton)\n",
    "    car_head = car_xy[-1]\n",
    "    road_xy = [a for a in road_xy if 60<a[0]<75]\n",
    "    car_bias = np.mean([y-47 for (x, y) in road_xy])\n",
    "    return car_bias"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "-4.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cacl_car_bias(obses[50], show=True)  # 从50帧之后开始进行转弯控制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Track generation: 1193..1497 -> 304-tiles track\n",
      "Episode finished after 1000 timesteps\n",
      "Track generation: 1243..1558 -> 315-tiles track\n",
      "Episode finished after 1000 timesteps\n"
     ]
    }
   ],
   "source": [
    "def test():\n",
    "    obses = []\n",
    "    env = gym.make('CarRacing-v0')\n",
    "    for i_episode in range(2):\n",
    "        observation = env.reset()\n",
    "        gray_obs = np.mean(observation, axis=2)\n",
    "        obses.append(gray_obs)\n",
    "        for t in range(1000):\n",
    "            env.render()\n",
    "            if t < 10:\n",
    "                action = (0, 1, 0) # steer, gas, brake\n",
    "            elif 10 <=t < 50:\n",
    "                action = (0, 0, 0)\n",
    "            else:\n",
    "                car_bias = cacl_car_bias(gray_obs)\n",
    "                action = (car_bias/10, 0, 0)\n",
    "            observation, reward, done, info = env.step(action)\n",
    "            gray_obs = np.mean(observation, axis=2)\n",
    "            obses.append(gray_obs)\n",
    "            if done:\n",
    "                print(\"Episode finished after {} timesteps\".format(t+1))\n",
    "                break\n",
    "    env.close()\n",
    "    return obses\n",
    "\n",
    "_ = test()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Find out the Car Use Tmpleta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x18abf137bc8>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "imshow(car)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x18ac2f7dbc8>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "car_image = np.copy(car[67:77, 46:50]) \n",
    "imshow(car_image)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x216 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = obses[90]\n",
    "coin = car_image\n",
    "\n",
    "result = match_template(image, coin)\n",
    "ij = np.unravel_index(np.argmax(result), result.shape) # 图像中某些点转换成坐标\n",
    "x, y = ij[::-1] # 注意这里的写法\n",
    "\n",
    "fig = plt.figure(figsize=(8, 3))\n",
    "ax1 = plt.subplot(1, 3, 1)\n",
    "ax2 = plt.subplot(1, 3, 2)\n",
    "ax3 = plt.subplot(1, 3, 3, sharex=ax2, sharey=ax2)\n",
    "\n",
    "ax1.imshow(coin, cmap=plt.cm.gray)\n",
    "ax1.set_axis_off()\n",
    "ax1.set_title('template')\n",
    "\n",
    "ax2.imshow(image, cmap=plt.cm.gray)\n",
    "ax2.set_axis_off()\n",
    "ax2.set_title('image')\n",
    "# highlight matched region\n",
    "hcoin, wcoin = coin.shape\n",
    "rect = plt.Rectangle((x, y), wcoin, hcoin, edgecolor='r', facecolor='none')\n",
    "ax2.add_patch(rect)\n",
    "\n",
    "ax3.imshow(result)\n",
    "ax3.set_axis_off()\n",
    "ax3.set_title('`match_template`\\nresult')\n",
    "# highlight matched region\n",
    "ax3.autoscale(False)\n",
    "ax3.plot(x, y, 'o', markeredgecolor='r', markerfacecolor='none', markersize=10)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.unravel_index??"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
